- Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathSolution.rb
31 lines (28 loc) · 651 Bytes
/
Solution.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# @param {String} target
# @return {String}
defalphabet_board_path(target)
s=[0,0]
ret=''
target.each_bytedo |c|
t=[(c - 97) / 5,(c - 97) % 5]
ret += path_to(s,t) + '!'
s=t
end
ret
end
# @param {Integer[]} start
# @param {Integer[]} target
# @return {String}
defpath_to(start,target)
ifstart == target
''
elsifstart == [5,0]
'U' + path_to([4,0],target)
elsiftarget == [5,0]
path_to(start,[4,0]) + 'D'
else
v_dir=start[0] > target[0] ? 'U' : 'D'
h_dir=start[1] > target[1] ? 'L' : 'R'
v_dir * (start[0] - target[0]).abs + h_dir * (start[1] - target[1]).abs
end
end